﻿//using ICSharpCode.SharpZipLib.Zip;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.IO.Compression;

namespace CE.iPhone.PList
{
    /// <summary>
    /// 
    /// </summary>
   public static  class UnzipHelper
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="filePath"></param>
        //public static string  unzipFileIOS(string filePath)
        //{
        //    string infoFile = string.Empty;
        //    // 判断文件是否是ipa文件
        //    if (Path.GetExtension(filePath).Equals(".ipa"))
        //    {
        //        // 获取文件名
        //        String appName = Path.GetFileNameWithoutExtension(filePath);
        //        // 设置加压的文件夹目录
        //        String outPath =  "C:\\TEMPinfo\\" + appName;
        //        // 获取输入流（ipa文件）
        //        ZipInputStream s = new ZipInputStream(File.OpenRead(filePath));
                
        //        // zip实体
        //        ZipEntry theEntry;
        //        String infoPlistName = "Info.plist";
        //        bool found = false;
               
        //        while ((theEntry = s.GetNextEntry()) != null)
        //        {
        //            Console.WriteLine(theEntry.Name);
        //            // 文件名称
        //            string fileName = Path.GetFileName(theEntry.Name);
        //            // 寻找Info.plist文件
        //            if (infoPlistName != null)
        //            {
        //                if (fileName.Equals(infoPlistName))
        //                {
        //                    found = true;
        //                    // 创建输出目录
        //                    if (outPath.Length > 0)
        //                    {
        //                        Directory.CreateDirectory(outPath);
        //                    }
        //                    // 文件写入操作
        //                    using (FileStream streamWriter = File.Create(outPath + "\\Info.plist"))
        //                    {

        //                        int size = 2048;
        //                        byte[] data = new byte[2048];
        //                        while (true)
        //                        {
        //                            size = s.Read(data, 0, data.Length);
        //                            if (size > 0)
        //                            {
        //                                streamWriter.Write(data, 0, size);
        //                                infoFile = outPath + "\\Info.plist";
        //                            }
        //                            else
        //                            {
        //                                break;
        //                            }
        //                        }
        //                    }
        //                    break;
        //                }
        //            }
        //        }
        //        // 一定要关闭流，不然下次会被占用
        //        s.Close();
        //        if (found == false)
        //        {
        //        }
        //    }
        //    return infoFile;
        //}


        public static string unzipFileIOS2(string filePath)
        {

                 string outPath = string.Empty;
            // 判断文件是否是ipa文件
            if (Path.GetExtension(filePath).Equals(".ipa"))
            {
                // 获取文件名
                string appName = Path.GetFileNameWithoutExtension(filePath);
                // 设置加压的文件夹目录
                outPath = "C:\\TEMPinfo\\" + appName;
                using (ZipArchive archive = ZipFile.OpenRead(filePath))
                {
                    foreach (ZipArchiveEntry entry in archive.Entries)
                    {
                        if (entry.FullName.EndsWith(".app/Info.plist", StringComparison.OrdinalIgnoreCase))
                        {
                            if (outPath.Length > 0)
                            {
                                Directory.CreateDirectory(outPath);
                            }
                            entry.ExtractToFile(outPath+"//Info.plist",true);
                        }
                    }
                }
            }
            return outPath + "//Info.plist";
        }
    }
}
